Traditional collaborative editing of documents tends to be performed serially, where two or more users take turns accessing a document, editing the document, and storing edits. The iterative editing process can cause delays since each user may be inhibited from accessing a document while another user is editing the document and the users may have to wait for a turn at editing the document. Additionally, the iterative editing process may make it difficult to keep track of who is editing which portions of a document, which version of a document is the most recent, and when the user will have a turn to access and edit a document.
In other types of traditional collaborative editing, each user can edit a different copy of a document, and subsequently, all of the edited copies may be merged into a single document. This large scale merge also may cause delays, lead to numerous editing conflicts, and/or be difficult to manage. For example, the user responsible for merging the documents may be required to track the relationship between the documents. The user may also be responsible for resolving conflicts among two or more of the edited copies.
Further types of collaborative authoring applications provide an editing environment, where two or more users can edit a document concurrently. Some of these conventional collaborative authoring applications are geared to merge multiple user copies of a document such that a final document represents all of the changes made in the multiple copies of the document. Each user edits a copy of the document, periodically sends updates to a master copy of the document and periodically receives updates from the master copy of the document. These collaborative authoring environments typically inhibit users from providing conflicting editing instructions to the master copy of the document and have a limited set of features allowing them to merge changes made only along the X or Y axis of a document. For example, a collaborative authoring application may merge changes such as a picture added next to a paragraph or a sentence inserted at the end of a paragraph.